package br.gov.dataprev.treinamento.ws.rs.impl;


import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import br.gov.dataprev.treinamento.ejb.excecao.ExcecaoNegocio;
import br.gov.dataprev.treinamento.ejb.modelo.Produto;
import br.gov.dataprev.treinamento.ejb.service.local.ProdutoServiceLocal;
import br.gov.dataprev.treinamento.ws.rs.ProdutoRestWs;

@Path("/produto")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
@Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
public class ProdutoRestWsImpl implements ProdutoRestWs { 

	private ProdutoServiceLocal getProdutoService() throws NamingException {

		Context ctx = new InitialContext();
		return (ProdutoServiceLocal) ctx.lookup("java:global/LojaEar/LojaEjb/ProdutoServiceImpl!br.gov.dataprev.treinamento.ejb.service.local.ProdutoServiceLocal");
	}
    
    @Override
	@POST
    @Path(value = "/inserirProduto")
    public Produto inserirProduto(Produto produto) throws ExcecaoNegocio {
		try {
			return getProdutoService().incluir(produto);
		} catch (Exception ex) {
			throw new ExcecaoNegocio(ex);
		}
	}

    @Override
	@PUT
    @Path(value = "/alterarProduto")
    public Produto alterarProduto(Produto produto) throws ExcecaoNegocio {
		try {
			return getProdutoService().alterar(produto);
		} catch (Exception ex) {
			throw new ExcecaoNegocio(ex);
		}
	}

    @Override
	@DELETE
    @Path(value = "/excluirProduto")    
	public Produto excluirProduto(Produto produto) throws ExcecaoNegocio {
		try {
			return getProdutoService().excluir(produto);
		} catch (Exception ex) {
			throw new ExcecaoNegocio(ex);
		}
	}



}
